C++ DLL 链接 Unresolved external
全部标签 我目前正在尝试构建和运行VTK的一些示例。构建进展顺利,但是在尝试运行示例时,我遇到了一些缺少DLL的错误。我正在使用Windows8.1,VisualStudio2012。我的路径实际上包括存储所有dll的目录。dll存储在:C:\ProgramFiles(x86)\VTK\bin\我的路径值为:C:\cygwin64\bin;C:\ProgramFiles\MicrosoftMPI\Bin\;C:\Perl64\site\bin;C:\Perl64\bin;C:\ProgramData\Oracle\Java\javapath;%SystemRoot%\system32;%Syst
我编写的应用程序需要cbw32.dll。在我的电脑上,dll在c:\windows\system32,路径上有c:\windows\system32。奇怪的是:此应用程序有一个安装程序,我用它在我自己的计算机上安装该应用程序。安装程序不分发dll。我们的客户和他们的客户安装和运行这个软件都很好。我在一位同事的计算机上安装了该软件,并且运行良好。他们唯一的dll实例在他们的c:\windows\system32中。我们的计算机都运行64位Windows7。但它在我的电脑上不起作用。为什么在所有计算机中分布相同的软件无法在我的计算机上找到dll,而dll恰好位于它应该在的位置?
我有一个基于MFC的应用程序。它会在几秒钟后继续寻找文件(使用基于CreateTimerQueueTimer的计时器)并执行一些操作。这在XP上总是崩溃(原因不明)。此应用程序在Windows7和Windows8上运行良好。但在XP上问题仍然存在。下面是没有显示任何帮助的调用堆栈反汇编截图如下:编辑1:我更改了一些设置并获得了这个新的调用堆栈。但是还是没有得到线索。:我不明白如何找出崩溃的原因。是否有任何提示或任何方式来跟踪它从反汇编中播种?还是系统的NTDLL.DLL文件有问题?欢迎任何帮助。 最佳答案 分析堆栈后,我意识到可能是
有点奇怪的问题,但我在使用mklink创建符号链接(symboliclink)时遇到了问题在Windows7上。由于使用cmd.exe时存在260个字符的限制,我正在做一些奇怪的事情。通过使用Process在我的Java源代码中创建符号链接(symboliclink).由于我不能完全解释它,这里是代码:importjava.io.BufferedInputStream;importjava.io.BufferedReader;importjava.util.ArrayList;importjava.util.List;importjava.util.Map;importjava.uti
所以我有一个汇编代码块,它初始化一个程序,解析kernel32,找到GetProcAddress,然后找到LoadLibarayA来加载User32.dll。它工作到LoadLibraryA为止。它在函数调用中崩溃,但我可以看到调试器中加载了User32.dll。如果我尝试在不同的模块(例如Kernel32.dll)上使用LoadLibraryA,它会返回并成功。如果你想看的话,这里有完整的源代码https://gist.github.com/mojobojo/921a5af897e86bb940a2Exceptionthrownat0x00007FFAFAE8E91C(ntdll.d
我升级到Qt5.5和RegisterDeviceNotification调用开始生成链接错误,项目未构建。它仍然使用Qt5.4构建,我在这两种情况下都使用VS2010编译器。boolMainWindow::nativeEvent(constQByteArray&eventType,void*message,long*result){MSG*msg=static_cast(message);intmsgType=msg->message;if(msgType==WM_PAINT){if(!msgp)//OnlythefirstWM_PAINT{GUIDInterfaceClassGuid
我在我的C#应用程序中遇到了一个奇怪的问题。我的应用程序使用一些外部.dll文件(用于外部数据库访问的MySQL和用于错误报告的NBug),这些文件存储在与主.exe相同的目录中。安装我的应用程序并从开始菜单运行它后,它加载并工作正常,这确认mysql.dll正在正常访问。但是,当应用程序崩溃时(由于未处理的异常),通常会弹出NBug错误处理程序,但它不会。而是显示Windows风格的错误报告程序。在执行进一步调查后,如果我从程序文件以外的位置运行该应用程序,例如在我的桌面上,NBug报告器加载正常。这让我相信这可能是一个权限问题。所以我尝试以管理员身份从ProgramFiles运行该
我使用WindowsOpenCV安装程序安装了最新版本,但在安装程序将文件解压缩到我的目录后,我找不到任何已安装的dll。我读到所有主要的dll,包括核心库和校准库都包含在$OPENCV_DIR/build/x64/bin中,但是这个目录只有几个文件,教程中没有提到任何文件。这是我的文件目录:如此处所示,此目录中没有dll。我也查看了对应的vc11和x86目录,都是同一套文件。我确信我没有做错任何事,但我看不到dll的安装位置。位于staticlib文件夹中的库文件,但这些不是我需要的。我在安装Opencv时是否遗漏了一个步骤? 最佳答案
我有多个C++可执行程序,它们使用许多也是用C++编写的库(我有所有这些库的源代码)。我面临的问题是:当可执行EXE包含一个dllDLL时,它们可能都依赖于额外的dllDLL1和DLL2:EXE-----DLL||DLL1DLL2如果DLL1和DLL2是同一个库并且DLL2是DLL1的更新版本,我将在链接和编译方面遇到麻烦。我该如何解决这个问题?有时,由于向后兼容性问题,我不能只转储DLL1并保持最新。 最佳答案 Microsoft为WindowsXP解决了这个问题,但对“native”开发人员隐瞒了有关如何解决此问题的信息。有点吓
我正在使用:Windows7;MinGW(GCC)版本4.8.1;C++我有几个自己的构建库,它们链接到一个可执行文件。一个链接库的简单示例:libFolder\libforms.aA)g++-omain\theApp.exemain\main.o-LlibFolder\-lformsB)g++-omain\theApp.exemain\main.olibFolder\libforms.a两者生成相同的可执行文件。让gcc知道什么的这两种方式有什么区别要链接的库?在B)上是否有任何退赛或No-Go? 最佳答案 这两个命令之间的区别在